package cn.edu.zafu.bigdata.x.zcy_0217;

interface Movable {
    // 抽象方法，表示物体移动
    void move();

    // 抽象方法，表示物体停止移动
    void stop();
}

interface Resizable {
    // 抽象方法，表示物体根据因子进行缩放
    void resize(double factor);
}

class Car implements Movable {
    // 实现 move() 方法
    @Override
    public void move() {
        System.out.println("The car is moving.");
    }

    // 实现 stop() 方法
    @Override
    public void stop() {
        System.out.println("The car has stopped.");
    }
}



class ResizableCircle implements Movable, Resizable {
    // ResizableCircle 类的属性 radius（半径）
    private double radius;

    // ResizableCircle 类的构造函数
    public ResizableCircle(double radius) {
        this.radius = radius;
    }

    // 实现 move() 方法
    @Override
    public void move() {
        System.out.println("The circle is moving.");
    }

    // 实现 stop() 方法
    @Override
    public void stop() {
        System.out.println("The circle has stopped.");
    }

    // 实现 resize() 方法
    @Override
    public void resize(double factor) {
        radius *= factor;
        System.out.println("The circle's new radius is: " + radius);
    }

    // 获取半径的值
    public double getRadius() {
        return radius;
    }
}





public class TestInterface {
    public static void main(String[] args) {
        // 创建 Car 和 ResizableCircle 的实例
        Movable car = new Car();
        Movable resizableCircle = new ResizableCircle(5.0);
        Resizable resizable = new ResizableCircle(5.0);

        // 验证每个类对接口方法的实现
        car.move(); // 调用 Car 的 move() 方法
        car.stop(); // 调用 Car 的 stop() 方法

        resizableCircle.move(); // 调用 ResizableCircle 的 move() 方法
        resizableCircle.stop(); // 调用 ResizableCircle 的 stop() 方法
        ((Resizable)resizableCircle).resize(2.0); // 将 resizableCircle 强制类型转换为 Resizable 并调用 resize() 方法

        // 验证 ResizableCircle 对接口方法的实现
        resizable.resize(1.5); // 调用 Resizable 的 resize() 方法
    }
}
